/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bibliOnline.db;

import bibliOnline.util.details.BookData;
import bibliOnline.util.details.RequestData;
import bibliOnline.util.details.UserDetails;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Map;

/**
 *
 * @author prova
 */
public class RequestManager 
{
    
    public static String addRequest(UserDetails user, Map<String, String[]> parametri) throws Exception 
    {
        // Controllo se l'utente è registrato
        if (user == null) 
        {
            throw new Exception("Per poter accedere alla lista occorre essere registrati");
        }

        PreparedStatement pst;
        ResultSet rs;
        String author, title, msg_risposta;

        try {
            author = parametri.get("author")[0];
            title = parametri.get("title")[0];
        } catch (java.lang.NullPointerException ex) {
            throw new Exception("Dati non inizializzati");
        }
        
        String sql = "select * from BOOK WHERE TITLE LIKE ? AND AUTHOR LIKE ?";

        pst = DBConnection.prepareStatement(sql);
        pst.setString(1, "%" + title + "%");
        pst.setString(2, "%" + author + "%");
        rs = pst.executeQuery();

        if((!rs.next()) || parametri.get("bypass")[0].equals("true")) 
        {
            // Inserire nuovo suggerimento nel database e generare messaggio di risposta
            PreparedStatement statement2;
            String sql2 = "insert into PURCHASE_SUGGESTION (USERNAME, TITLE, AUTHOR) values (?, ?, ?)";

            statement2 = DBConnection.prepareStatement(sql2);
            statement2.setString(1, user.getUsername());
            statement2.setString(2, title);
            statement2.setString(3, author);
            statement2.executeUpdate();
            statement2.close();

            msg_risposta = "Inserimento completato";
        } 
        else 
        {
            msg_risposta = "sicuro";
        }

        return msg_risposta;
    }  
    
   
    public static ArrayList<RequestData> lista_proposte_acquisto(UserDetails user) throws Exception 
    {
        // Controllo se l'utente è registrato
        if (user == null || (!user.getType().equals(UserDetails.LIBRARIAN))) {
            throw new Exception("Per poter accedere alla lista occorre essere registrati come bibliotecario!");
        }

        PreparedStatement pst;
        ResultSet rs;
        ArrayList<RequestData> bookList = new ArrayList(2);
        String sql = "select * from PURCHASE_SUGGESTION";
        
        
        pst = DBConnection.prepareStatement(sql);
        rs = pst.executeQuery();

        // Aggiungo la lista dei libri trovati
        while (rs.next()) {
            bookList.add(new RequestData(
                    rs.getInt("PURCHASE_SUGGESTION_ID"),
                    rs.getString("USERNAME"),
                    rs.getString("TITLE"),
                    rs.getString("AUTHOR")));
        }

        return bookList;
    }  
    
    
}


    

